﻿using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EntityFrameworkETL.Interfaces
{
    public interface IRepository
    {
        IEnumerable<T> SelectSource<T>(Func<IQueryable<T>, IQueryable<T>> query) where T : class;
        IEnumerable<DbCommand> GetInsertCommands<T>(IEnumerable<T> items, bool IdentityInsert) where T : class;
        string DestinationConnectionString();
        IEnumerable<DbCommand> GetDeleteCommands<T>(IEnumerable<T> items) where T : class;
        IEnumerable<T> SelectDestinationForDelete<T>() where T : class;
        void DeleteAll<T>() where T : class;
    }
}
